define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'scanwork/config/index' + location.search,
                    save_url: 'scanwork/config/save',
                    get_url: 'scanwork/config/get',
                    test_url: 'scanwork/config/test',
                }
            });

            // 加载配置数据
            loadConfigData();
            
            // 绑定表单提交事件
            $('#config-form').on('submit', function(e) {
                e.preventDefault();
                saveConfig();
            });
        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"));
            }
        }
    };

    // 加载配置数据
    function loadConfigData() {
        Fast.api.ajax({
            url: 'scanwork/config/get',
            type: 'GET'
        }, function (data, ret) {
            if (ret.code === 1) {
                renderConfigItems(data);
            } else {
                Toastr.error(ret.msg || '加载配置失败');
            }
        });
    }

    // 渲染配置项
    function renderConfigItems(configs) {
        var html = '';
        
        // 按分组渲染配置项
        var groups = {
            '基础配置': [],
            '小程序配置': [],
            '二维码配置': [],
            '文件上传配置': [],
            '七牛云配置': []
        };
        
        // 分组配置项
        configs.forEach(function(config) {
            if (config.key.startsWith('site_') || config.key.startsWith('trace_')) {
                groups['基础配置'].push(config);
            } else if (config.key.startsWith('miniapp_')) {
                groups['小程序配置'].push(config);
            } else if (config.key.startsWith('qrcode_')) {
                groups['二维码配置'].push(config);
            } else if (config.key.startsWith('upload_')) {
                groups['文件上传配置'].push(config);
            } else if (config.key.startsWith('qiniu_')) {
                groups['七牛云配置'].push(config);
            }
        });
        
        // 渲染每个分组
        Object.keys(groups).forEach(function(groupName) {
            if (groups[groupName].length > 0) {
                html += '<div class="config-section">';
                html += '<h4 class="section-title">' + groupName + '</h4>';
                
                groups[groupName].forEach(function(config) {
                    html += renderConfigItem(config);
                });
                
                html += '</div>';
            }
        });
        
        $('.config-list').html(html);
    }

    // 渲染单个配置项
    function renderConfigItem(config) {
        var statusClass = (config.status == 1 || config.status === 'normal') ? 'status-normal' : 'status-hidden';
        var statusText = (config.status == 1 || config.status === 'normal') ? '启用' : '禁用';
        
        var html = '<div class="config-item">';
        html += '<div class="config-item-header">';
        html += '<h5 class="config-item-title">' + config.title + '</h5>';
        html += '<span class="config-item-key">' + config.key + '</span>';
        html += '</div>';
        
        if (config.description) {
            html += '<div class="config-item-description">' + config.description + '</div>';
        }
        
        html += '<div class="form-group">';
        html += '<label class="col-sm-2 control-label">配置值</label>';
        html += '<div class="col-sm-8">';
        
        if (config.type === 'textarea') {
            html += '<textarea name="' + config.key + '" class="form-control" rows="3" placeholder="请输入' + config.title + '">' + (config.value || '') + '</textarea>';
        } else if (config.type === 'select') {
            html += '<select name="' + config.key + '" class="form-control">';
            html += '<option value="1"' + (config.value == 1 ? ' selected' : '') + '>启用</option>';
            html += '<option value="0"' + (config.value == 0 ? ' selected' : '') + '>禁用</option>';
            html += '</select>';
        } else if (config.type === 'switch') {
            html += '<div class="switch-container">';
            html += '<label class="switch">';
            html += '<input type="checkbox" name="' + config.key + '" value="1" ' + (config.value == '1' ? 'checked' : '') + '>';
            html += '<span class="slider"></span>';
            html += '</label>';
            html += '</div>';
        } else if (config.type === 'number') {
            html += '<input type="number" name="' + config.key + '" class="form-control" value="' + (config.value || '') + '" placeholder="请输入' + config.title + '">';
        } else {
            html += '<input type="text" name="' + config.key + '" class="form-control" value="' + (config.value || '') + '" placeholder="请输入' + config.title + '">';
        }
        
        html += '<span class="help-block">当前状态: <span class="status-badge ' + statusClass + '">' + statusText + '</span></span>';
        html += '</div>';
        html += '</div>';
        html += '</div>';
        
        return html;
    }

    // 保存配置
    function saveConfig() {
        var formData = $('#config-form').serialize();
        
        Fast.api.ajax({
            url: 'scanwork/config/save',
            type: 'POST',
            data: formData
        }, function (data, ret) {
            if (ret.code === 1) {
                Toastr.success('配置保存成功');
                loadConfigData(); // 重新加载数据
            } else {
                Toastr.error(ret.msg || '保存失败');
            }
        });
    }

    // 测试配置
    function testConfig(type) {
        Fast.api.ajax({
            url: 'scanwork/config/test',
            type: 'POST',
            data: {type: type}
        }, function (data, ret) {
            if (ret.code === 1) {
                Toastr.success(ret.msg || '测试成功');
            } else {
                Toastr.error(ret.msg || '测试失败');
            }
        });
    }

    // 绑定测试按钮事件
    $(document).on('click', '.btn-test-domain', function () {
        testConfig('domain');
    });

    $(document).on('click', '.btn-test-qiniu', function () {
        testConfig('qiniu');
    });

    $(document).on('click', '.btn-test-miniapp', function () {
        testConfig('miniapp');
    });

    return Controller;
});
